package com.weiquan.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.weiquan.dto.CommentRequest;
import com.weiquan.dto.PostPublishRequest;
import com.weiquan.vo.CommentVO;
import com.weiquan.vo.PostVO;

import java.util.List;

/**
 * 社区服务接口
 */
public interface CommunityService {

    /**
     * 发布帖子
     */
    Long publishPost(PostPublishRequest request, Long userId);

    /**
     * 获取帖子列表
     */
    IPage<PostVO> getPostList(Integer current, Integer size, Integer categoryId, Integer status, String sortBy, String keyword, Long userId);

    /**
     * 获取帖子详情
     */
    PostVO getPostDetail(Long postId, Long userId);

    /**
     * 获取热门帖子
     */
    List<PostVO> getHotPosts(Integer limit);

    /**
     * 获取精选案例
     */
    List<PostVO> getFeaturedCases(Integer limit);

    /**
     * 点赞/取消点赞帖子
     */
    Boolean togglePostLike(Long postId, Long userId);

    /**
     * 收藏/取消收藏帖子
     */
    Boolean togglePostCollect(Long postId, Long userId);

    /**
     * 发表评论
     */
    Long publishComment(CommentRequest request, Long userId);

    /**
     * 获取帖子评论列表
     */
    List<CommentVO> getCommentList(Long postId, Long userId);

    /**
     * 点赞/取消点赞评论
     */
    Boolean toggleCommentLike(Long commentId, Long userId);

    /**
     * 删除帖子
     */
    Boolean deletePost(Long postId, Long userId);

    /**
     * 删除评论
     */
    Boolean deleteComment(Long commentId, Long userId);

    /**
     * 获取用户发布的帖子
     */
    List<PostVO> getUserPosts(Long userId);

    /**
     * 获取用户的评论
     */
    List<CommentVO> getUserComments(Long userId);

    /**
     * 搜索帖子
     */
    IPage<PostVO> searchPosts(String keyword, Integer page, Integer size, Long userId);

    /**
     * 获取分类统计
     */
    List<Object> getCategoryStats();
}